package LetCode;

import java.util.Arrays;

/**
 * @author: lwt
 * @date: 2025/7/28 19:02
 * @description:
 * 给定一个整数数组 nums，将数组中的元素向右轮转 k 个位置，其中 k 是非负数。
 * 示例1:
 * 输入: nums = [1,2,3,4,5,6,7]，k = 3
 * 输出：[5,6,7,1,2,3,4]
 * 解释：
 * 向右轮转 1 步：[7,1,2,3,4,5,6]
 * 向右轮转 2 步：[6,7,1,2,3,4,5]
 * 向右轮转3步：[5,6,7,1,2,3,4]
 */
public class day5 {
    public static void main(String[] args) {
        int[] nums = {1, 2, 3, 4, 5, 6, 7};
//        int[] nums = {-1,-100,3,99};
        int k = 3;
//        int i = 0;
//        int index = i+k;
//        while(){
//            int result = nums[index];
//            nums[index] = nums[i];
//            index = i+k
//            storage(nums,k,result);



//        }

//    private static void storage(int[] nums,int k,int result) {
//        int i = 0;
//        int j = i+k;
//        if (j < nums.length) {
//             result = nums[j];
//            nums[j] = nums[i];
//            storage(nums,result);
//        }
//    }



        int n= nums.length;
        reserve(nums,0,n-1); //反转整个数组
        reserve(nums,0,k-1); //反转前k-1个元素
        reserve(nums,k,n-1);
        System.out.println(Arrays.toString(nums));
    }

    private static void reserve(int[] nums,int start,int end ) {
        while (start < end) {
            int temp = nums[start];
            nums[start] = nums[end];
            nums[end] = temp;
            start ++;
            end--;
        }
    }


//        rotate(nums, k);
//        System.out.println(Arrays.toString(nums));
//    }

//    private static void rotate(int[] nums, int k) {
//        //存储数组最后一个位置的元素
//        for (int i = 0;i<k;i++){//轮转次数
//            int end = nums[nums.length-1];
//            //元素后移一位
//            for (int j =nums.length-1 ;j>0;j--){
//                nums[j] = nums[j-1];
//            }
//            nums[0] = end;
//        }
//    }
}

